home *** CD-ROM | disk | FTP | other *** search
/ Motor Sport Digital Archive Collection 1960s / Motor Sport Digital Archive Collection 1960s.iso / main.swf / scripts / mx / effects / effectClasses / ZoomInstance.as < prev   
Encoding:
Text File  |  2008-05-21  |  10.0 KB  |  323 lines

  1. package mx.effects.effectClasses
  2. {
  3.    import flash.events.Event;
  4.    import flash.events.MouseEvent;
  5.    import mx.core.mx_internal;
  6.    import mx.effects.EffectManager;
  7.    import mx.events.FlexEvent;
  8.    
  9.    use namespace mx_internal;
  10.    
  11.    public class ZoomInstance extends TweenEffectInstance
  12.    {
  13.       mx_internal static const VERSION:String = "2.0.1.0";
  14.       
  15.       private var show:Boolean = true;
  16.       
  17.       private var origPercentHeight:Number;
  18.       
  19.       public var zoomWidthFrom:Number;
  20.       
  21.       private var origX:Number;
  22.       
  23.       private var origY:Number;
  24.       
  25.       private var scaledOriginY:Number;
  26.       
  27.       private var scaledOriginX:Number;
  28.       
  29.       private var origPercentWidth:Number;
  30.       
  31.       public var zoomWidthTo:Number;
  32.       
  33.       public var zoomHeightFrom:Number;
  34.       
  35.       private var newX:Number;
  36.       
  37.       private var newY:Number;
  38.       
  39.       public var captureRollEvents:Boolean;
  40.       
  41.       private var origScaleX:Number;
  42.       
  43.       private var origScaleY:Number;
  44.       
  45.       public var originX:Number;
  46.       
  47.       public var originY:Number;
  48.       
  49.       public var zoomHeightTo:Number;
  50.       
  51.       private var _mouseHasMoved:Boolean = false;
  52.       
  53.       public function ZoomInstance(param1:Object)
  54.       {
  55.          _mouseHasMoved = false;
  56.          show = true;
  57.          super(param1);
  58.       }
  59.       
  60.       override public function finishEffect() : void
  61.       {
  62.          if(captureRollEvents)
  63.          {
  64.             target.removeEventListener(MouseEvent.ROLL_OVER,mouseEventHandler,false);
  65.             target.removeEventListener(MouseEvent.ROLL_OUT,mouseEventHandler,false);
  66.             target.removeEventListener(MouseEvent.MOUSE_MOVE,mouseEventHandler,false);
  67.          }
  68.          super.finishEffect();
  69.       }
  70.       
  71.       private function getScaleFromWidth(param1:Number) : Number
  72.       {
  73.          return param1 / (target.width / Math.abs(target.scaleX));
  74.       }
  75.       
  76.       private function getScaleFromHeight(param1:Number) : Number
  77.       {
  78.          return param1 / (target.height / Math.abs(target.scaleY));
  79.       }
  80.       
  81.       override public function play() : void
  82.       {
  83.          super.play();
  84.          applyPropertyChanges();
  85.          if(isNaN(zoomWidthFrom) && isNaN(zoomWidthTo) && isNaN(zoomHeightFrom) && isNaN(zoomHeightTo))
  86.          {
  87.             if(show)
  88.             {
  89.                zoomWidthFrom = zoomHeightFrom = 0;
  90.                zoomWidthTo = target.scaleX;
  91.                zoomHeightTo = target.scaleY;
  92.             }
  93.             else
  94.             {
  95.                zoomWidthFrom = target.scaleX;
  96.                zoomHeightFrom = target.scaleY;
  97.                zoomWidthTo = zoomHeightTo = 0;
  98.             }
  99.          }
  100.          else
  101.          {
  102.             if(isNaN(zoomWidthFrom) && isNaN(zoomWidthTo))
  103.             {
  104.                zoomWidthFrom = zoomWidthTo = target.scaleX;
  105.             }
  106.             else if(isNaN(zoomHeightFrom) && isNaN(zoomHeightTo))
  107.             {
  108.                zoomHeightFrom = zoomHeightTo = target.scaleY;
  109.             }
  110.             if(isNaN(zoomWidthFrom))
  111.             {
  112.                zoomWidthFrom = target.scaleX;
  113.             }
  114.             else if(isNaN(zoomWidthTo))
  115.             {
  116.                zoomWidthTo = zoomWidthFrom == 1 ? 0 : 1;
  117.             }
  118.             if(isNaN(zoomHeightFrom))
  119.             {
  120.                zoomHeightFrom = target.scaleY;
  121.             }
  122.             else if(isNaN(zoomHeightTo))
  123.             {
  124.                zoomHeightTo = zoomHeightFrom == 1 ? 0 : 1;
  125.             }
  126.          }
  127.          if(zoomWidthFrom < 0.01)
  128.          {
  129.             zoomWidthFrom = 0.01;
  130.          }
  131.          if(zoomWidthTo < 0.01)
  132.          {
  133.             zoomWidthTo = 0.01;
  134.          }
  135.          if(zoomHeightFrom < 0.01)
  136.          {
  137.             zoomHeightFrom = 0.01;
  138.          }
  139.          if(zoomHeightTo < 0.01)
  140.          {
  141.             zoomHeightTo = 0.01;
  142.          }
  143.          origScaleX = target.scaleX;
  144.          origScaleY = target.scaleY;
  145.          newX = origX = target.x;
  146.          newY = origY = target.y;
  147.          if(isNaN(originX))
  148.          {
  149.             scaledOriginX = target.width / 2;
  150.          }
  151.          else
  152.          {
  153.             scaledOriginX = originX * origScaleX;
  154.          }
  155.          if(isNaN(originY))
  156.          {
  157.             scaledOriginY = target.height / 2;
  158.          }
  159.          else
  160.          {
  161.             scaledOriginY = originY * origScaleY;
  162.          }
  163.          scaledOriginX = Number(scaledOriginX.toFixed(1));
  164.          scaledOriginY = Number(scaledOriginY.toFixed(1));
  165.          origPercentWidth = target.percentWidth;
  166.          if(!isNaN(origPercentWidth))
  167.          {
  168.             target.width = target.width;
  169.          }
  170.          origPercentHeight = target.percentHeight;
  171.          if(!isNaN(origPercentHeight))
  172.          {
  173.             target.height = target.height;
  174.          }
  175.          tween = createTween(this,[zoomWidthFrom,zoomHeightFrom],[zoomWidthTo,zoomHeightTo],duration);
  176.          if(captureRollEvents)
  177.          {
  178.             target.addEventListener(MouseEvent.ROLL_OVER,mouseEventHandler,false);
  179.             target.addEventListener(MouseEvent.ROLL_OUT,mouseEventHandler,false);
  180.             target.addEventListener(MouseEvent.MOUSE_MOVE,mouseEventHandler,false);
  181.          }
  182.       }
  183.       
  184.       override public function onTweenEnd(param1:Object) : void
  185.       {
  186.          var _loc2_:Number = NaN;
  187.          var _loc3_:Number = NaN;
  188.          if(!isNaN(origPercentWidth))
  189.          {
  190.             _loc2_ = Number(target.width);
  191.             target.percentWidth = origPercentWidth;
  192.             if(Boolean(target.parent) && target.parent.autoLayout == false)
  193.             {
  194.                target._width = _loc2_;
  195.             }
  196.          }
  197.          if(!isNaN(origPercentHeight))
  198.          {
  199.             _loc3_ = Number(target.height);
  200.             target.percentHeight = origPercentHeight;
  201.             if(Boolean(target.parent) && target.parent.autoLayout == false)
  202.             {
  203.                target._height = _loc3_;
  204.             }
  205.          }
  206.          super.onTweenEnd(param1);
  207.          if(mx_internal::hideOnEffectEnd)
  208.          {
  209.             EffectManager.suspendEventHandling();
  210.             target.scaleX = origScaleX;
  211.             target.scaleY = origScaleY;
  212.             target.move(origX,origY);
  213.             EffectManager.resumeEventHandling();
  214.          }
  215.       }
  216.       
  217.       private function mouseEventHandler(param1:MouseEvent) : void
  218.       {
  219.          if(param1.type == MouseEvent.MOUSE_MOVE)
  220.          {
  221.             _mouseHasMoved = true;
  222.          }
  223.          else if(param1.type == MouseEvent.ROLL_OUT || param1.type == MouseEvent.ROLL_OVER)
  224.          {
  225.             if(!_mouseHasMoved)
  226.             {
  227.                param1.stopImmediatePropagation();
  228.             }
  229.             _mouseHasMoved = false;
  230.          }
  231.       }
  232.       
  233.       override public function onTweenUpdate(param1:Object) : void
  234.       {
  235.          var _loc2_:Number = NaN;
  236.          var _loc3_:Number = NaN;
  237.          var _loc4_:Number = NaN;
  238.          var _loc5_:Number = NaN;
  239.          EffectManager.suspendEventHandling();
  240.          if(Math.abs(newX - Number(target.x.toFixed(1))) > 0.1)
  241.          {
  242.             origX += Number(target.x.toFixed(1)) - newX;
  243.          }
  244.          if(Math.abs(newY - Number(target.y.toFixed(1))) > 0.1)
  245.          {
  246.             origY += Number(target.y.toFixed(1)) - newY;
  247.          }
  248.          target.scaleX = param1[0];
  249.          target.scaleY = param1[1];
  250.          _loc2_ = param1[0] / origScaleX;
  251.          _loc3_ = param1[1] / origScaleY;
  252.          _loc4_ = scaledOriginX * _loc2_;
  253.          _loc5_ = scaledOriginY * _loc3_;
  254.          newX = scaledOriginX - _loc4_ + origX;
  255.          newY = scaledOriginY - _loc5_ + origY;
  256.          newX = Number(newX.toFixed(1));
  257.          newY = Number(newY.toFixed(1));
  258.          target.move(newX,newY);
  259.          tween.mx_internal::needToLayout = true;
  260.          EffectManager.resumeEventHandling();
  261.       }
  262.       
  263.       override public function initEffect(param1:Event) : void
  264.       {
  265.          super.initEffect(param1);
  266.          if(param1.type == FlexEvent.HIDE || param1.type == Event.REMOVED)
  267.          {
  268.             show = false;
  269.          }
  270.       }
  271.       
  272.       private function applyPropertyChanges() : void
  273.       {
  274.          var _loc1_:PropertyChanges = null;
  275.          var _loc2_:Boolean = false;
  276.          var _loc3_:Boolean = false;
  277.          _loc1_ = propertyChanges;
  278.          if(_loc1_)
  279.          {
  280.             _loc2_ = false;
  281.             _loc3_ = false;
  282.             if(_loc1_.end["scaleX"] !== undefined)
  283.             {
  284.                zoomWidthFrom = isNaN(zoomWidthFrom) ? Number(target.scaleX) : zoomWidthFrom;
  285.                zoomWidthTo = isNaN(zoomWidthTo) ? Number(_loc1_.end["scaleX"]) : zoomWidthTo;
  286.                _loc3_ = true;
  287.             }
  288.             if(_loc1_.end["scaleY"] !== undefined)
  289.             {
  290.                zoomHeightFrom = isNaN(zoomHeightFrom) ? Number(target.scaleY) : zoomHeightFrom;
  291.                zoomHeightTo = isNaN(zoomHeightTo) ? Number(_loc1_.end["scaleY"]) : zoomHeightTo;
  292.                _loc3_ = true;
  293.             }
  294.             if(_loc3_)
  295.             {
  296.                return;
  297.             }
  298.             if(_loc1_.end["width"] !== undefined)
  299.             {
  300.                zoomWidthFrom = isNaN(zoomWidthFrom) ? getScaleFromWidth(target.width) : zoomWidthFrom;
  301.                zoomWidthTo = isNaN(zoomWidthTo) ? getScaleFromWidth(_loc1_.end["width"]) : zoomWidthTo;
  302.                _loc2_ = true;
  303.             }
  304.             if(_loc1_.end["height"] !== undefined)
  305.             {
  306.                zoomHeightFrom = isNaN(zoomHeightFrom) ? getScaleFromHeight(target.height) : zoomHeightFrom;
  307.                zoomHeightTo = isNaN(zoomHeightTo) ? getScaleFromHeight(_loc1_.end["height"]) : zoomHeightTo;
  308.                _loc2_ = true;
  309.             }
  310.             if(_loc2_)
  311.             {
  312.                return;
  313.             }
  314.             if(_loc1_.end["visible"] !== undefined)
  315.             {
  316.                show = _loc1_.end["visible"];
  317.             }
  318.          }
  319.       }
  320.    }
  321. }
  322.  
  323.